package service;

import java.util.ArrayList;

import bean.Direccion;
import bean.Proveedor;
import bean.VOList;
import bean.vo.ProveedorVO;

@SuppressWarnings({"unchecked"})
public abstract class ServiciosProveedor {
	
	protected static Proveedor buscarProveedor (String cuit) throws Exception{
		Proveedor prov = (Proveedor) SistemaCVR.getInstancia().buscarEntidad(new Proveedor(cuit));
		return prov;
	}
	
	public static ProveedorVO buscarProveedor (ProveedorVO proveedor) throws Exception{
		Proveedor prov = ServiciosProveedor.buscarProveedor(proveedor.getCuit());
		return prov != null ? prov.getVO() : null;
	}
	
	public static ArrayList<ProveedorVO> getProveedores() throws Exception{
		return new VOList<ProveedorVO>().getVoList(SistemaCVR.getInstancia().getEntidades(Proveedor.class.getName()));
	}
	
	public static void crearProveedor(ProveedorVO proveedor) throws Exception{
		if (ServiciosProveedor.buscarProveedor(proveedor) == null ){
			Direccion direccion = ServiciosDireccion.crearDireccion(proveedor.getDireccion());
			Proveedor prov = new Proveedor(proveedor, direccion);
			SistemaCVR.getInstancia().agregarEntidad(prov);
		} else {
			throw new Exception("ERROR - Ya existe un proveedor con el CUIT ingresado.");	
		}
	}
	
	public static void eliminarProveedor (ProveedorVO proveedor) throws Exception{
		Proveedor prov = ServiciosProveedor.buscarProveedor(proveedor.getCuit());
		if (prov != null ){
			SistemaCVR.getInstancia().eliminarEntidad(prov);
		}else {
			throw new Exception("ERROR - No existe un proveedor con el CUIT ingresado.");
		}
	}
	
	public static void modificarProveedor(ProveedorVO proveedor) throws Exception{
		Proveedor prov = ServiciosProveedor.buscarProveedor(proveedor.getCuit());
		if (prov != null ){
			prov.setRazonSocial(proveedor.getRazonSocial());
			prov.setTelefono(proveedor.getTelefono());
			
			SistemaCVR.getInstancia().modificarEntidad(prov);
		} else {
			throw new Exception("No existe un cliente con el CUIT ingresado.");
		}
	}
}
